
package com.ms.utils;

import com.ms.entity.Manager;
import com.ms.entity.Organizer;

/**
 * 用于存储当前线程的用户信息（通过 ThreadLocal）
 * 支持Manager和Organizer两种用户类型
 */
public class UserContext {
    // 线程局部变量：每个请求线程独立存储用户信息
    private static final ThreadLocal<Object> CURRENT_USER = new ThreadLocal<>();

    // 设置当前登录用户
    public static void setUser(Object user) {
        CURRENT_USER.set(user);
    }

    // 获取当前登录用户
    public static Object getUser() {
        return CURRENT_USER.get();
    }

    // 获取Manager类型用户
    public static Manager getManager() {
        Object user = CURRENT_USER.get();
        return user instanceof Manager ? (Manager) user : null;
    }

    // 获取Organizer类型用户
    public static Organizer getOrganizer() {
        Object user = CURRENT_USER.get();
        return user instanceof Organizer ? (Organizer) user : null;
    }

    // 清除线程变量（必须调用，避免内存泄漏）
    public static void remove() {
        CURRENT_USER.remove();
    }

    public static Object getUserByToken(String token) {
        return null;
    }
}